home *** CD-ROM | disk | FTP | other *** search
/ Openstep 4.2 (Developer) / Openstep Developer 4.2.iso / NextDeveloper / Source / GNU / perl / Perl / ext / util / make_ext < prev    next >
Encoding:
Text File  |  1995-02-22  |  3.0 KB  |  118 lines

  1. #!/bin/sh
  2.  
  3. # This script acts as a simple interface for building extensions.
  4. # It primarily used by the perl Makefile:
  5. #
  6. # d_dummy $(dynamic_ext): miniperl preplibrary FORCE
  7. #        ext/util/make_ext dynamic $@
  8. #
  9. # It may be deleted in a later release of perl so try to
  10. # avoid using it for other purposes.
  11.  
  12. target=$1;  shift
  13. extspec=$1; shift
  14. passthru="$*" # allow extra macro=value to be passed through
  15. echo ""
  16.  
  17. case $CONFIG in
  18. '')
  19.     if test -f config.sh; then TOP=.;
  20.     elif test -f ../config.sh; then TOP=..;
  21.     elif test -f ../../config.sh; then TOP=../..;
  22.     elif test -f ../../../config.sh; then TOP=../../..;
  23.     elif test -f ../../../../config.sh; then TOP=../../../..;
  24.     else
  25.         echo "Can't find config.sh generated by Configure"; exit 1
  26.     fi
  27.     . $TOP/config.sh
  28.     ;;
  29. esac
  30.  
  31. if test "X$extspec" = X; then
  32.     echo "make_ext: no extension specified"
  33.     exit 1;
  34. fi
  35.  
  36. # The Perl Makefile.SH will expand all extensions to
  37. #    lib/auto/X/X.a  (or lib/auto/X/Y/Y.a is nested)
  38. # A user wishing to run make_ext might use
  39. #    X (or X/Y or X::Y is nested)
  40.  
  41. # canonise into X/Y form (pname)
  42. case "$extspec" in
  43. lib*)    # Remove lib/auto prefix and /*.* suffix
  44.     pname=`echo "$extspec" | sed -e 's:^lib/auto/::' -e 's:/[^/]*\.[^/]*$::' ` ;;
  45. *::*)    # Convert :: to /
  46.     pname=`echo "$extspec" | sed -e 's/::/\//g' ` ;;
  47. *)    pname="$extspec" ;;
  48. esac
  49. # echo "Converted $extspec to $pname"
  50.  
  51. mname=`echo "$pname"   | sed -e 's!/!::!g'`
  52. depth=`echo "$pname"   | sed -e 's![^/][^/]*!..!g'`
  53. make=${altmake-make}
  54. makefile=Makefile
  55. makeargs=''
  56. makeopts=''
  57.  
  58. if test ! -d "ext/$pname"; then
  59.     echo "    Skipping $extspec (directory does not exist)"
  60.     exit 0 # not an error ?
  61. fi
  62.  
  63.  
  64. echo "    Making $mname ($target)"
  65.  
  66. cd ext/$pname
  67.  
  68. # check link type and do any preliminaries
  69. case "$target" in
  70.         # convert 'static' or 'dynamic' into 'all LINKTYPE=XXX'
  71. static)     makeargs="LINKTYPE=static CCCDLFLAGS="
  72.         target=all
  73.         ;;
  74. dynamic)    makeargs="LINKTYPE=dynamic";
  75.         target=all
  76.         ;;
  77.  
  78. *clean) # If Makefile has been moved to Makefile.old by a make clean
  79.         # then use Makefile.old for realclean rather than rebuild it
  80.         if test ! -f $makefile -a -f Makefile.old; then
  81.         makefile=Makefile.old
  82.         makeopts="-f $makefile"
  83.         echo "Note: Using Makefile.old"
  84.         fi
  85.         ;;
  86.  
  87. *)    # for the time being we are strict about what make_ext is used for
  88.     echo "make_ext: unknown make target '$target'"; exit 1
  89.     ;;
  90. '')    echo "make_ext: no make target specified (eg static or dynamic)"; exit 1
  91.     ;;
  92. esac
  93.  
  94. if test ! -f $makefile ; then
  95.     test -f Makefile.PL && ../$depth/miniperl -I../$depth/lib Makefile.PL $passthru
  96. fi
  97. if test ! -f $makefile ; then
  98.     if test -f Makefile.SH; then
  99.         echo "Warning: Writing $makefile from old-style Makefile.SH!"
  100.         sh Makefile.SH
  101.     else
  102.         echo "Warning: No Makefile!"
  103.     fi
  104. fi
  105.  
  106. case "$target" in
  107. clean)        ;;
  108. realclean)    ;;
  109. *)    # Give makefile an opportunity to rewrite itself.
  110.     # reassure users that life goes on...
  111.     $make config $passthru || echo "$make config failed, continuing anyway..."
  112.     ;;
  113. esac
  114.  
  115. $make $makeopts $target $makeargs $passthru || exit
  116.  
  117. exit $?
  118.